﻿NES Explorer
============
Version: 1.0

Please notice
=============
This tool is still extremly early in development. Use with caution.



What's this?
============
If you're like me, interesting in snooping around NES ROM's for interesting content, this utility
may come in handy. 

How to use
==========
It's really dead simple (I hope). Load an iNES-ROM and browse the different tabs.


Requirements
============
This utility requires a machine capable of running .NET framework 3.5. 

"Info"
======
The Info-tab displays alot of information about the ROM.

"HEX"
=====
The HEX-view allows you to view all PRG-banks. Pick desired ROM-size (depending on mapper) and pick bank number.
Selected bank can also be exported to a .BIN-file by using the menu.

"CHR"
=====
Here you can scan the file for character-data. You can obviously view the CHR-banks but browsing through
PRG-banks is also possible (some ROMs doesn't have CHR-ROM as you might now..)

"Palette"
=========
If you want to edit the palette of your favourite game, you might like this tab. This function scans the
loaded ROM for palette-tables and allows you to browse them. Please notice that many developers uses different
formats for storing palettes so it might now always work. 
Currently only "Nintendo"-format is supported (works with alot of games but not all). 
Click on each palette-ID to the left and the palette is viewed to the right. 


PPU-Objects
===========
Nintendo (and perhaps others?) often have a standard way of PPU-objects (titlescreens and similar) in a NES-ROM.
This tabpage tries to locate such objects and let you browse through them.
You'll see a listview here with two columns. "Offset" displays the fileoffset for the data and "Size" will ofcourse
display the possible size of the data.
There will probably be some false alarms (=displayed as garbage) but a good hint here is to look for objects
with a large size (~>100 bytes).
By right-clicking an "object" you can export it to several filestypes:
ASM	- Creates a file suitable for linking with your assembler-project
BIN - A binary RAW-data file.
PPU - Same as a .BIN-file but with a 16-byte header attached to it (see fileformat description below).
You can also right click the image to the right and export it as an PNG-image.


[PPU-fileformat]
----------------
The PPU-fileformat is just a binary file with a 16-byte header. Creative minds might find this header
usefull. Here's a brief description of the header below.
The CHR-bank selection bits below reflects the active settings in the GUI, not the ROM-data itself.

Header:	dc.b	"PPU"			;Identification
		dc.b	1				;Fileformat information
								;bit 7-4)Possible future usage
								;bit 3-0)Fileformat version (should be set to "1").
		dc.b	0				;bit 7= CHR-selection 1)Upper 4K 0)Lower 4K 
								;bit 6-0 = Possible future-usage
		dc.b	0				;CHR-bank selection
		dc.b	0,0,0			;24-bit fileposition in the .NES file for this object (if applicable).
		dc.b	0,0				;16-bit length of PPU-data (excluding header)
		dc.b	0,0,0,0			;Possible future-usage.


Author
======
Feel free to e-mail if you'd like to send feedback, ideas or simply some kind words. :)
 morjoh@live.se
 

 History
 ========
 v1.0	- 2014-01-XX	- Implemented zoomed CHR-preview
						- PPU-objects can now be exported to a .PPU-file.
						- PPU-object-viewer now bugfixed.
						- PPU-object ASM-export bugfixed.
						- Misc bugfixes

 v0.22b	- 2013-12-18	- Minor fixes

 v0.21b	- 2013-12-17	- Minor fixes

 v0.2b	- 2013-12-13	- Now supports VS-palettes.
						- Added PPU-object viewer

 v0.1	- 2013-04-19	- First release 